package com.hanser.hancoder.core.saver;

import com.hanser.hancoder.ai.model.HtmlCodeResult;
import com.hanser.hancoder.exception.BusinessException;
import com.hanser.hancoder.exception.ErrorCode;
import com.hanser.hancoder.model.enums.CodeGenTypeEnum;

/**
 * HTML代码文件保存模板
 * 用于将AI生成的HTML代码保存为文件
 */
public class HtmlCodeFileSaverTemplate extends CodeFileSaverTemplate<HtmlCodeResult> {
    
    /**
     * 获取代码生成类型
     * 
     * @return CodeGenTypeEnum.HTML 返回HTML代码生成类型枚举
     */
    @Override
    protected CodeGenTypeEnum getCodeGenType() {
        return CodeGenTypeEnum.HTML;
    }

    /**
     * 保存HTML代码文件
     * 将HTML代码写入index.html文件
     * 
     * @param result HTML代码生成结果，包含HTML代码内容
     * @param baseDirPath 基础目录路径，用于保存文件的根目录
     */
    @Override
    protected void saveFile(HtmlCodeResult result, String baseDirPath) {
        // 将HTML代码写入index.html文件
        writeToFile(baseDirPath, "index.html", result.getHtmlCode());
    }

    /**
     * 验证HTML代码输入参数
     * 检查HTML代码结果对象及其内容是否为空
     * 
     * @param result HTML代码生成结果，需要验证的输入参数
     */
    @Override
    protected void validateInput(HtmlCodeResult result) {
        // 调用父类的输入验证
        super.validateInput(result);
        // 验证HTML代码是否为空
        if (result.getHtmlCode() == null || result.getHtmlCode().isEmpty()) {
            throw new BusinessException(ErrorCode.SYSTEM_ERROR, "HTML代码不能为空");
        }
    }
}
